﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Timers;
using System.Web;
using System.Web.Services;
using System.Xml.Linq;

namespace Beryl
{
    /// <summary>
    /// TimerServer 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务，请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class TimerServer : System.Web.Services.WebService
    {
        private static TimerServer instance = null;
        private static readonly object uniqueLock = new object();
        public static Timer timer; // 定义计时器对象
        public static Timer global;// APS_ManuBOM & APS_Routing
        public static TimerServer Instance
        {
            get
            {
                lock (uniqueLock)
                {
                    if (instance == null)
                    {
                        instance = new TimerServer();
                    }
                }
                return instance;
            }
        }

        [WebMethod]
        public  void StartTask()
        {
            if (timer == null)
            {
                CommonMethod.Instance.QueryData();
                timer = new Timer(); // 初始化计时器
                // 设置计时器触发事件的频率（单位为毫秒）
                timer.Interval = 1000 * 60; // 每分钟触发一次
                // 添加计时器触发事件的处理函数
                timer.Elapsed += CommonMethod.Timer_Elapsed;
                // 开始计时器
                timer.Start();
            }
            else
            {
                throw new Exception("已经存在正在运行的定时任务");
            }

            Console.WriteLine("定时任务已启动！");
        }

        [WebMethod]
        public void StopTask()
        {
            if (timer != null && timer.Enabled)
            {
                timer.Stop(); // 停止计时器
                timer.Dispose(); // 释放计时器所占用的资源
                timer = null; // 将计时器引用置为null

                Console.WriteLine("定时任务已停止！");
            }
            else
            {
                throw new Exception("没有正在运行的定时任务");
            }
        }

        [WebMethod]
        public void StartTask1()
        {
            if (global == null)
            {
                CommonMethod.Instance.GetGlobal();
                global = new Timer(); // 初始化计时器
                // 设置计时器触发事件的频率（单位为毫秒）
                global.Interval = 1000 * 60; // 每分钟触发一次
                // 添加计时器触发事件的处理函数
                global.Elapsed += CommonMethod.Timer_global;
                // 开始计时器
                global.Start();
            }
            else
            {
                throw new Exception("已经存在正在运行的定时任务");
            }

            Console.WriteLine("定时任务已启动！");
        }

        [WebMethod]
        public void StopTask1()
        {
            if (global != null && global.Enabled)
            {
                global.Stop(); // 停止计时器
                global.Dispose(); // 释放计时器所占用的资源
                global = null; // 将计时器引用置为null

                Console.WriteLine("定时任务已停止！");
            }
            else
            {
                throw new Exception("没有正在运行的定时任务");
            }
        }
    }
}
